/**
 * 函数工具类，提供函数相关的工具方法
 */
export class FunctionUtils {
  /**
   * 检查一个值是否为函数
   * @param value 要检查的值
   * @returns 如果是函数则返回true，否则返回false
   */
  static isFunction(value: unknown): value is (...args: any[]) => any {
    // 特殊处理null和undefined，它们的typeof返回'object'和'undefined'
    if (value == null) {
      return false;
    }

    // 检查基本类型是否为函数
    const isFuncType = typeof value === 'function';

    // 针对某些特殊环境下的函数类型检查（如某些类实例方法）
    const isFuncObject = Object.prototype.toString.call(value) === '[object Function]';

    return isFuncType || isFuncObject;
  }
}